Authentication Vulnerability
Authentication Nedir?
Web sitelerinin kullanıcıların giriş yapılabilmesi için uyguladıkları bir takım doğrulamalar olarak tanımlanabilir. Yani kullanıcının, kullanıcı adı- şifre, sms, mail, biyometrik veriler, 3.taraf doğrulamalar( Google authentication) gibi doğrulamaların, doğru girilmesi sonucunda, verdiği bilgilerin veri tabanında karşılaştırılması ve doğruysa hesabına erişim sağlamasına authentication (doğrulama) denir.
Genel olarak bakacaksak ikiye ayrılır diyebiliriz:
Authentication Vulnerbility Nedir Nasıl Test Edilir?
Saldırganın çeşitli doğrulama faktörlerini çeşitli saldırı ve metodlar ile kendisine ait olmayan hesaba giriş yapabilmesine authentication açığı denir. Bu zafiyetten etkilenmek sadece geliştiricilerin suçu değildir kullanıcıların da saldırılara karşı zor parolalar ve doğrulama unsurlarını da koruması gerekir. Bu zafiyet nasıl test edilir kısaca anlatalım eğer bir web sitesi şifre denemelerine belirli bir sınırlama getirmiyorsa örneğin saldırganın saldırı şifreleri listesinde qwertyx123 şifresi 1000000 sırada diyelim, eğer web sitesinde şifre denemelerine karşı belli bir sınır getirmezse brute force(kaba kuvvet) saldırısı ile bu şifre kırılacaktır. Ve saldırgan ilk doğrulama aşamasını geçebilecektir. Bunun dışında güçlü doğrulama seçenekleri de amacına uygun olmalıdır. Bazı web siteleri 3 ya da 4 rakam ile 2FA doğrulaması gerçekleştiriyor ve deneme sınırlandırılması da olmadığını düşünürsek bu doğrulamanın yarım saatte bypass edilmesi mümkün hale geliyor.
Bunun dışında doğrulamaların düzgün yapılandırılmaması brute force atakları uygulanmadan kolay bir şekilde atlamamızı da sağlıyor. Örneğin BurpSuite ile doğrulama başarılı olduğunda bize bir doğrulandı paketi geldiğini düşünelim bu paketi doğrulama sayfasında tekrar yolladığımızda bypass edebiliriz. Ya da doğrulama sayfasında başka sayfalara ulaşmaya çalıştığımızda direk bypass etmiş olabiliriz. Örnek verelim:
https://alperencoskun.com/account?authentication
Şeklinde bir doğrulama url i görüyoruz. Ve aslında var olan bir sayfaya örn: “https://alperencoskun.com/alperen/settings” yönlendirerek bypass etmemiz mümkün olabiliyor.
Şimdi PortSwigger’dan birkaç örnek yapalım.
Burada bizden saldıracağımız bir kullanıcı bulmamız, listede var olan bir kullanıcıyı bulduktan sonra şifresini bulmamız istenmiş.
Yukarıdaki listeden rastgele bir kullanıcıyla giriş yapmayı deneyerek BurpSuite paketini yakalayacağız ve var olan bir kullanıcı bulmaya çalışacağız.
Access the lab a tıkladıktan sonra My account bölümünden giriş yapacağız.
Bu kısımda BurpSuite paket yakalamayı başlatıyoruz ve kullanıcı adı bölümüne ansible yazıyoruz ve şifreyi de 1234 olarak rastgele giriyorum. Burada BurpSuite nin Intruder özelliğini görmüş olacağız. Intruder özelliği bizim çeşitli kaba kuvvet saldırıları yapmamıza izin verir ve denemelerde sayfaların döndürdüğü yanıt ,sayfa boyutu ve response kodu ile ilgili bilgi almamızı sağlar.
CTRL+I ya da sağ click >send to Intruder diyerek ulaşabiliriz.
Payloads bölümünden clear dedik ve sadece kullanıcı ismi kullandığımız parametreyi seçerek add butonuna tıkladık.
Şimdi aşağıdaki gibi PortSwigger’ın verdiği olası kullanıcılar listesini kopyalayıp Payloads bölümüne Paste tıklayarak aşağıdaki gibi ekliyoruz.
Ve Start attack tıklayarak kaba kuvvet saldırımızı başlatmış oluyoruz.
Diğer sonuçlardan farklı boyutta yanıt vermiş buradan aix şeklinde bir kullanıcı olduğunu ve response koduna bakarak geçersiz bir şifre girdiğimizi de anlamış olduk. Şimdi aix kullanıcısının şifresine brute force(kaba kuvvet) saldırısı ile bulmaya çalışacağız.
Payloads bölümüne de şifreleri kopyaladıktan sonra Paste ile eklemiş olduk.
Şimdi şifre denemeye başlatmak için Sağ üst kısımda bulunan Start attack seçeneğine tıklıyoruz.
Şekildeki gibi aix kullanıcısının şifresini 777777 olarak öğrendik. Ve labı tamamladık.
Bir Lab daha çözelim:
Burada Carlos kullanıcısının kullanıcı adı şifresini biliyoruz fakat 2FA bilmediğimizden hesap sayfasına ulaşarak 2FA bypass etmemiz isteniyor.
İlk aşamada kullanıcı adı şifre, wiener peter şeklinde giriş yaptık.
Ve labaratuvarda bulunan email server ile 2FA doğrulamasını yaptık.
Ve başarılı olduğumuzda bizi aşağıdaki url görmüş olduk
https:/xxxxxx.net/my-account
Bizde Carlos un kullanıcı adı ve şifre bildiğimiz için 2FA aşamasını url yönlendirerek geçmeye çalışacağız.
2FA sayfasında gelen url aşağıdaki gibidir:
login2 silip yerine my-account yazdığımızda Carlos hesabına giriş yapmış oluyoruz.
Peki Gerçek Web Sitelerinde Labaratuvarlardaki Gibi Çıkar Mı?
Evet mümkün, günümüzde bu hatalara sıklıkla karşılaşılmakta. Çözdüğümüz bu labaratuvarlardaki gibi bir zafiyet tespit edebiliriz. Ayrıca sayfaya yönlendirerek 2FA atlatmak daha kolay olabiliniyo bu sadece doğrulanma sayfasının ardından açılan sayfayı değil farklı sayfalara da yönlendirmeye çalışarak bypass etmek mümkün.
Birkaç Örnek Authentication Raporları
https://hackerone.com/reports/418767
https://hackerone.com/reports/587910
https://hackerone.com/reports/649533